<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>类的基本知识</title>
  </head>
  <body>
    <script>
/**
 * 总结：
 *  1. 类中的构造器不是必须的，
 */

      // 创建一个Person类
      class Person {
        // 构造器方法
        constructor(name, age) {
          // this指向实例对象
          this.name = name
          this.age = age
        }

        speak() {
          // speak方法放在哪里？-- 类的原型对象上，供类的实例对象使用
          console.log(`${this.name} speaking...`)
        }
      }

      // 创建一个student类，继承Person类
      class Student extends Person {
        constructor(name, age, grade) {
          // 调用父类的构造器方法
          super(name, age)
          this.grade = grade
        }

        // 重写父类的speak方法
        speak() {
          console.log(`我是${this.name}，今年${this.age}岁，读在${this.grade}年级`)
        }

        study() {
            console.log(`${this.name}正在学习...`)
        }
      }

      const s1 = new Student('小张', 15, '高一')
      console.log(s1)
      s1.speak()
      s1.study()
    </script>
  </body>
</html>
